<?php
/**
 * Created by PhpStorm.
 * User: wumengmeng <wu_mengmeng@foxmail.com>
 * Date: 2019/4/26 0026
 * Time: 14:35
 */

namespace HiCommon\Service;

use HiCommon\Repository\OrderPayRepository;
use HiCommon\Repository\OrderPayRefundRepository;

class PayService extends BaseService
{

    /**
     * 微信小程序支付
     *
     * @param string $s_order_type      订单类型     'njyy-年检预约订单','ptshp-普通商品','wxfw-维修服务','wxby-维修保养'
     * @param string $s_out_trade_no    商户订单号    微信商户内唯一
     * @param int    $n_total_fee       支付金额      单位：分
     * @param string $s_body            商品名称
     * @param string $s_openid          微信小程序用户openid
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_wxmini_pay($s_order_type = '',$s_out_trade_no = '',$n_total_fee = 0,$s_body = '',$s_openid = ''){

        $s_pay_type = 'wxmini';
        $s_out_trade_no = str_trim($s_out_trade_no);
        $n_total_fee = intval($n_total_fee);
        $s_attach = '信达养车-'.$s_order_type.'-'.$s_pay_type.'-'.$s_out_trade_no;
        $s_body = str_trim($s_body);
        $s_openid = str_trim($s_openid);
        //        $s_trade_type = 'JSAPI';

        if(!in_array($s_order_type,['njyy','ptshp','wxfw','wxby'])){
            return hello_error('支付数据异常',[],'订单类型错误：njyy-年检预约订单,ptshp-普通商品,wxfw-维修服务,wxby-维修保养');
        }
        if(strlen($s_out_trade_no) <= 0){
            return hello_error('商户订单号不能为空');
        }
        if($n_total_fee <= 0){
            return hello_error('支付金额不能为空');
        }
        if(strlen($s_body) <= 0){
            return hello_error('商品名称不能为空');
        }
        if(strlen($s_openid) <= 0){
            return hello_error('微信小程序用户openid不能为空');
        }

        //支付请求
        $n_total_fee = pay_ratio_down($n_total_fee);
        //        $s_out_trade_no = $s_out_trade_no.'_'.random_int(0,999);
        $arr_order = [
          'out_trade_no'=>$s_out_trade_no,
          'total_fee'=>$n_total_fee,
          'body'=>$s_body,
          'openid'=>$s_openid,
          //          'trade_type'=>$s_trade_type,
          'attach'=>$s_attach
        ];
        //        $arr_order = array_replace_recursive($arr_order,$arr_option);
        $result = PayYanSongDaService::pay_wechat()->miniapp($arr_order);
        $result = $result->toArray();

        //记录预支付日志
//        LogService::wright_pay_log($s_pay_type,'Ready Go',$arr_order,'info');
        $result['order_data'] = $arr_order;

        return  hello_success('成功',$result);
    }

    /**
     * 微信app支付
     *
     * @param string $s_order_type      订单类型     'njyy-年检预约订单','ptshp-普通商品','wxfw-维修服务','wxby-维修保养'
     * @param string $s_out_trade_no    商户订单号    微信商户内唯一
     * @param int    $n_total_fee       支付金额      单位：分
     * @param string $s_body            商品名称
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_wxapp_pay($s_order_type = '',$s_out_trade_no = '',$n_total_fee = 0,$s_body = ''){
        $s_pay_type = 'wxapp';
        $s_out_trade_no = str_trim($s_out_trade_no);
        $n_total_fee = intval($n_total_fee);
        $s_attach = '信达养车-'.$s_order_type.'-'.$s_pay_type.'-'.$s_out_trade_no;
        $s_body = str_trim($s_body);
        //        $s_trade_type = 'JSAPI';
        if(strlen($s_out_trade_no) <= 0){
            return hello_error('商户订单号不能为空');
        }
        if($n_total_fee <= 0){
            return hello_error('支付金额不能为空');
        }
        if(strlen($s_body) <= 0){
            return hello_error('商品名称不能为空');
        }

        //支付请求
        $n_total_fee = pay_ratio_down($n_total_fee);
        //        $s_out_trade_no = $s_out_trade_no.'_'.random_int(0,999);
        $arr_order = [
          'out_trade_no'=>$s_out_trade_no,
          'total_fee'=>$n_total_fee,
          'body'=>$s_body,
          //          'openid'=>$s_openid,
          //          'trade_type'=>$s_trade_type,
          'attach'=>$s_attach
        ];
        //        $arr_order = array_replace_recursive($arr_order,$arr_option);
        $result = PayYanSongDaService::pay_wechat()->app($arr_order);

        $s_content = $result->getContent();

        //支付记录-日志
        $result = [
          'order_data'=>$arr_order,
          'result'=>$s_content,
        ];

        //记录预支付日志
//        LogService::wright_pay_log($s_pay_type,'Ready Go',$arr_order,'info');

        $result['order_data'] = $arr_order;
        return  hello_success('成功',$result);
    }

    /**
     * 支付宝支付
     *
     * @param int    $n_id
     * @param string $s_order_type
     * @param string $s_out_trade_no
     * @param int    $n_total_fee
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_aliapp_pay($n_id = 0,$s_order_type = '',$s_out_trade_no = '',$n_total_fee = 0){
        $s_out_trade_no = str_trim($s_out_trade_no);
        $n_total_fee = intval($n_total_fee);
//        $s_attach = '信达养车-'.$s_order_type.'-'.$s_pay_type.'-'.$s_out_trade_no;
        //        $s_trade_type = 'JSAPI';
        //['njyy','ptshp','wxfw','wxby']


        $s_subject = '';
        if($s_order_type == 'njyy'){
            $s_subject = '年检预约单支付（信达养车）';
        }
        elseif ($s_order_type == 'ptshp'){
            $s_subject = '普通商品单支付（信达养车）';
        }
        elseif ($s_order_type == 'wxfw'){
            $s_subject = '维修服务单支付（信达养车）';
        }
        elseif ($s_order_type == 'wxby'){
            $s_subject = '维修保养单支付（信达养车）';
        }elseif ($s_order_type == 'dljy'){
            $s_subject = '道路救援（信达养车）';
        }

        $arr_body = [
          'id'=>$n_id,
//          'order_sn'=>$s_out_trade_no,
          'order_type'=>$s_order_type,
          'pay_type'=>'aliapp',
        ];

        $s_body = json_encode($arr_body);
        if(strlen($s_out_trade_no) <= 0){
            return hello_error('商户订单号不能为空');
        }
        if($n_total_fee <= 0){
            return hello_error('支付金额不能为空');
        }
        if(strlen($s_subject) <= 0){
            return hello_error('商品名称不能为空');
        }

        //支付请求
        $n_total_fee = pay_ratio_down($n_total_fee);//支付比例系数
        $n_total_amount = fee_to_money($n_total_fee);

        $arr_order = [
          'out_trade_no' => $s_out_trade_no,
          'total_amount' => $n_total_amount,
          'subject'      => $s_subject,
          'body'      => $s_body,
//          'http_method'  => 'GET'
          //          'attach'=>$s_attach
        ];
        //        $arr_order = array_replace_recursive($arr_order,$arr_option);

        $result = PayYanSongDaService::pay_ali()->app($arr_order);
//        $result_state = $result->getStatusCode();

        $s_content = $result->getContent();

        //支付记录-日志
        $result = [
          'order_data'=>$arr_order,
          'result'=>$s_content,
        ];
        return  hello_success('成功',$result);

    }



}